package com.yuandian.management.controller;


import com.yuandian.api.management.entity.ConfModuleManagement;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.enums.ModuleName;
import com.yuandian.management.service.ConfModuleManagementService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 模块配置管理表-Controller
 * @author zfsn
 * @date 2023-4-19
 */
@Api(tags = "探针管理-配置管理")
@RestController
@RequestMapping("/moduleManagement")
public class ConfProbeConfigController {

	@Autowired
	private ConfModuleManagementService confModuleManagementService;

	/**
	 * 通过主键查询数据
	 *
	 * @param idList 主键集合
	 * @return 通用返回对象
	 */
	@ApiOperation(value = "通过主键查询数据", notes = "通过主键查询数据，支持批量查询")
	@GetMapping("/{ids}")
	public R<List<ConfModuleManagement>> queryByIds(@PathVariable("ids") List<Integer> idList) {
		return R.ok(confModuleManagementService.listByIds(idList));
	}

	/**
	 * 分页查询模块配置管理--只查询探针
	 * @param vo
	 * @return
	 */
	@PostMapping("/queryProbeModuleList")
	@ApiOperation(value = "分页查询模块配置管理--只查询探针", notes = "分页查询模块配置管理--只查询探针")
	public R queryProbeModuleList(@RequestBody ConfModuleManagement vo) {
		vo.setModuleName(ModuleName.BPM_PROBE.name());
		return confModuleManagementService.queryModuleManagementList(vo);
	}

	/**
	 * 新增模块配置管理
	 * @param module
	 * @return
	 */
	@PostMapping("/addProbeModule")
	@ApiOperation(value = "新增模块配置管理", notes = "新增模块配置管理")
	public R addProbeModule(@RequestBody ConfModuleManagement module) {
		return confModuleManagementService.insertOrUpdateModuleManagement(module);
	}

	/**
	 * 更新模块配置管理
	 * @param module
	 * @return
	 */
	@PostMapping("/editProbeModule")
	@ApiOperation(value = "更新模块配置管理", notes = "更新模块配置管理")
	public R editProbeModule(@RequestBody ConfModuleManagement module) {
		return confModuleManagementService.insertOrUpdateModuleManagement(module);
	}

	/**
	 * 一键复制模块配置管理
	 * @param module
	 * @return
	 */
	@PostMapping("/copyProbeModule")
	@ApiOperation(value = "一键复制模块配置管理", notes = "一键复制模块配置管理")
	public R copyProbeModule(@RequestBody ConfModuleManagement module) {
		return confModuleManagementService.insertOrUpdateModuleManagement(module);
	}



	/**
	 * 删除模块配置管理
	 * @param ids 勾选要删除的记录id集合
	 * @return
	 */
	@GetMapping("/deleteProbeModuleByIds/{ids}")
	@ApiOperation(value = "删除模块配置管理", notes = "删除模块配置管理")
	public R deleteModuleManagemenByIds(@NotNull @PathVariable Integer[] ids) {
		return confModuleManagementService.deleteModuleManagemenByIds(ids);
	}

	/**
	 * 根据id查询模块配置管理
	 * @param id
	 * @return 通用返回对象
	 */
	@GetMapping("/queryProbeModuleById/{id}")
	@ApiOperation(value = "根据id查询模块配置管理", notes = "根据id查询模块配置管理")
	public R queryProbeModuleById(@NotNull @PathVariable Integer id) {
		return confModuleManagementService.queryModuleManagementById(id);
	}


}